package unit01;

import java.util.function.Consumer;
import java.util.stream.Stream;

/**
 * @author wangzhuangzhuang
 * @DESC: 使用方法引用来访问某个现有的方法，并将其作为Lambda表达式进行处理
 *  => 【"::"】双冒号将 [实例引用或类] 与 [方法] 分开了
 * @date 2022-05-02 22:27
 */
public class MethodReferenceDemo {
	public static void main(String[] args) {
		// 使用Lambda表达式
		Stream.of(3, 1, 4, 1, 5, 9)
				.forEach(x -> System.out.println(x));

		// 使用方法引用
		Stream.of("A", "B", "C", "D")
				.forEach(System.out::println);

		// 将方法引用赋给函数式接口
		Consumer<Integer> printer = System.out::println;
		Stream.of(3, 1, 4, 1, 5, 9)
				.forEach(printer);

		// 在静态方法中使用方法引用
		Stream.generate(Math::random) // 静态方法
				.limit(10)
				.forEach(System.out::println); // 实例方法

	}
}